const {User} = require('../model')
const jwt = require('../util/jwt')
const {jwtSecret} = require('../config/config.default')

// 用户注册
exports.register = async (req, res, next) => {
   try {
    //  1. 获取请求体数据
    //  2. 数据验证
    //  2.1.基本数据验证
    //  2.2 业务数据验证

    //  3. 验证通过， 将数据保存至数据库
    let user = new User(req.body.user)
    // 保存到数据库
    await user.save()
    user = user.toJSON()
    delete user.password
    // 4. 发送成功相应
     res.status(201).json({user})
   } catch (error) {
     next(error)
   }
 }

 exports.login = async (req, res, next) => {
   try {
    //  1. 数据验证
    // 2. 生成token
    const user = req.user.toJSON()
    console.log(user)
    const token = await jwt.sign({
      userId: user._id
    }, jwtSecret, {
      expiresIn: '2 days' // 过期时长 60, "2 days", "10h", "7d"
    })
    // 3. 发送成功响应数据
     res.status(200).json({user:{
       ...user,
       token
     }})
   } catch (error) {
     next(error)
   }
 }
 
//获取登录用户资料
exports.getCurrentUser = (req, res, next) => {
  try {
    res.status(200).json({user: req.user})
  } catch (error) {
    next(error)
  }
} 

//更新登录用户资料
exports.updateCurrentUser = (req, res, next) => {
  try {
    res.send('get /user')
  } catch (error) {
    next(error)
  }
}